package com.kehutong.charge.entity;

import com.kehutong.charge.util.enums.ChargeBillStatusEnum;
import com.kehutong.charge.util.enums.CommonEnum;
import com.kehutong.charge.util.enums.ResidentsTypeEnum;
import com.kehutong.common.entity.DataEntity;
import org.coraframework.json.annotation.JSONField;
import org.coraframework.orm.annotation.Column;
import org.coraframework.orm.annotation.Table;
import org.coraframework.orm.annotation.UnSave;
import org.coraframework.orm.util.IDType;

import java.math.BigDecimal;
import java.util.List;

/**
 * @program: kht
 * @description: 每项类别账单
 * @author: joneron
 * @create: 2021/7/5
 **/
@Table(value = "t_charge_bill_items", comment = "每项类别账单表", multi = true, idType = IDType.TIMESTAMP, engine = "innodb")
public class ChargeBillItems extends DataEntity {

    protected ChargeBillItems(String id) {
        super(id);
    }

    @Column(comment = "小区编号")
    private String communityNo;

    @Column(comment = "小区名称")
    private String communityName;

    @Column(comment = "小区账单编号")
    private String communityBillNo;

    @Column(comment = "账单地址")
    private String billAddress;

    @Column(comment = "房屋编号")
    private String houseNo;

    @UnSave //房屋集合
    private List<String> houseNoList;

    @Column(comment = "楼栋编号")
    private String buildNo;

    @Column(comment = "楼栋名称")
    private String buildName;

    @Column(comment = "楼层房号合并字段")
    private String mergeName;

    @UnSave //楼栋集合
    private List<String> buildNoList;

    @Column(comment = "账单编号")
    private String houseBillNo;

    @Column(comment = "账单项编号")
    private String itemBillNo;

    @Column(comment = "仪表类型编号")
    private String meterTypeNo;

    @Column(comment = "仪表类型名称")
    private String meterTypeName;

    @Column(comment = "仪表分类编号")
    private String meterClassifyNo;

    @Column(comment = "仪表分类名称")
    private String meterClassifyName;

    @Column(comment = "账单年月")
    private String billYearMonth;

    @Column(comment = "记账周期")
    private String billCycleStart;

    @Column(comment = "记账周期")
    private String billCycleEnd;

    @Column(comment = "出账单日")
    private String billDate;

    @Column(comment = "账单状态")
    private ChargeBillStatusEnum billStatus;

    @Column(comment = "缴费状态")
    private ChargeBillStatusEnum chargeStatus;

    @Column(comment = "缴费时间")
    private String chargeDate;

    @Column(comment = "违约金额")
    private BigDecimal penaltyAmount;

    @Column(comment = "违约时间")
    private String penaltyDate;

    @Column(comment = "违约天数")
    private Integer penaltyDays;

    @Column(comment = "缴费人")
    private String chargeName;

    @Column(comment = "手机号码")
    private String mobile;

    @Column(comment = "缴费人编号")
    private String userNo;

    @Column(comment = "住户类型")
    private ResidentsTypeEnum residentsType;

    @Column(comment = "收费类型")
    private CommonEnum chargeType;

    @Column(comment = "费用类型编号")
    private String feeTypeNo;

    @Column(comment = "费用类型名称")
    private String feeTypeName;

    @Column(comment = "使用量")
    private BigDecimal usageNumber;

    @Column(comment = "上次读数")
    private BigDecimal lastTimeNumber;

    @Column(comment = "本次读数")
    private BigDecimal timeNumber;

    @Column(comment = "读数开始时间")
    private String startTime;

    @Column(comment = "读数结束时间")
    private String endTime;

    @Column(comment = "计费单位")
    private String calcUnit;

    @Column(comment = "单价")
    private BigDecimal price;

    @Column(comment = "账单金额")
    private BigDecimal billAmount;

    @Column(comment = "应付金额")
    private BigDecimal payableAmount;

    @Column(comment = "实付金额")
    private BigDecimal paymentAmount;

    @Column(comment = "议价金额")
    private BigDecimal negotiateAmount;

    @Column(comment = "说明、描述")
    private String remark;

    @JSONField(serialize = false)
    @Column(comment = "逻辑删除")
    private boolean deleted;

    @Column(comment = "创建人")
    private String createName;

    @Column(comment = "修改人")
    private String updateName;

    @Column(comment = "房屋配置id")
    private String chargeHouseSetId;

    @Column(comment = "收费类型配置表id")
    private String chargeTypeConfigId;

    @Column(dbType = "TEXT", length = 65535, comment = "费用配置json")
    private String chargeProjectConfigJson;

    @Column(dbType = "TEXT", length = 65535, comment = "阶梯价json")
    private String chargeLadderConfigJson;

    public ChargeBillStatusEnum getChargeStatus() {
        return chargeStatus;
    }

    public void setChargeStatus(ChargeBillStatusEnum chargeStatus) {
        this.chargeStatus = chargeStatus;
    }

    public String getBuildName() {
        return buildName;
    }

    public void setBuildName(String buildName) {
        this.buildName = buildName;
    }

    public String getMergeName() {
        return mergeName;
    }

    public void setMergeName(String mergeName) {
        this.mergeName = mergeName;
    }

    public List<String> getHouseNoList() {
        return houseNoList;
    }

    public void setHouseNoList(List<String> houseNoList) {
        this.houseNoList = houseNoList;
    }

    public List<String> getBuildNoList() {
        return buildNoList;
    }

    public void setBuildNoList(List<String> buildNoList) {
        this.buildNoList = buildNoList;
    }

    public String getBuildNo() {
        return buildNo;
    }

    public void setBuildNo(String buildNo) {
        this.buildNo = buildNo;
    }

    public String getCommunityBillNo() {
        return communityBillNo;
    }

    public void setCommunityBillNo(String communityBillNo) {
        this.communityBillNo = communityBillNo;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public BigDecimal getLastTimeNumber() {
        return lastTimeNumber;
    }

    public void setLastTimeNumber(BigDecimal lastTimeNumber) {
        this.lastTimeNumber = lastTimeNumber;
    }

    public BigDecimal getTimeNumber() {
        return timeNumber;
    }

    public void setTimeNumber(BigDecimal timeNumber) {
        this.timeNumber = timeNumber;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getCommunityName() {
        return communityName;
    }

    public void setCommunityName(String communityName) {
        this.communityName = communityName;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getUserNo() {
        return userNo;
    }

    public void setUserNo(String userNo) {
        this.userNo = userNo;
    }

    public Integer getPenaltyDays() {
        return penaltyDays;
    }

    public void setPenaltyDays(Integer penaltyDays) {
        this.penaltyDays = penaltyDays;
    }

    public String getBillCycleStart() {
        return billCycleStart;
    }

    public void setBillCycleStart(String billCycleStart) {
        this.billCycleStart = billCycleStart;
    }

    public String getBillCycleEnd() {
        return billCycleEnd;
    }

    public void setBillCycleEnd(String billCycleEnd) {
        this.billCycleEnd = billCycleEnd;
    }

    public String getBillDate() {
        return billDate;
    }

    public void setBillDate(String billDate) {
        this.billDate = billDate;
    }

    public BigDecimal getPenaltyAmount() {
        return penaltyAmount;
    }

    public void setPenaltyAmount(BigDecimal penaltyAmount) {
        this.penaltyAmount = penaltyAmount;
    }

    public String getFeeTypeNo() {
        return feeTypeNo;
    }

    public void setFeeTypeNo(String feeTypeNo) {
        this.feeTypeNo = feeTypeNo;
    }

    public String getFeeTypeName() {
        return feeTypeName;
    }

    public void setFeeTypeName(String feeTypeName) {
        this.feeTypeName = feeTypeName;
    }

    public String getMeterTypeName() {
        return meterTypeName;
    }

    public void setMeterTypeName(String meterTypeName) {
        this.meterTypeName = meterTypeName;
    }

    public String getMeterClassifyName() {
        return meterClassifyName;
    }

    public void setMeterClassifyName(String meterClassifyName) {
        this.meterClassifyName = meterClassifyName;
    }

    public BigDecimal getUsageNumber() {
        return usageNumber;
    }

    public void setUsageNumber(BigDecimal usageNumber) {
        this.usageNumber = usageNumber;
    }

    public String getCalcUnit() {
        return calcUnit;
    }

    public void setCalcUnit(String calcUnit) {
        this.calcUnit = calcUnit;
    }

    public String getPenaltyDate() {
        return penaltyDate;
    }

    public void setPenaltyDate(String penaltyDate) {
        this.penaltyDate = penaltyDate;
    }

    public ResidentsTypeEnum getResidentsType() {
        return residentsType;
    }

    public void setResidentsType(ResidentsTypeEnum residentsType) {
        this.residentsType = residentsType;
    }

    public String getBillYearMonth() {
        return billYearMonth;
    }

    public void setBillYearMonth(String billYearMonth) {
        this.billYearMonth = billYearMonth;
    }

    public String getCommunityNo() {
        return communityNo;
    }

    public void setCommunityNo(String communityNo) {
        this.communityNo = communityNo;
    }

    public String getHouseNo() {
        return houseNo;
    }

    public void setHouseNo(String houseNo) {
        this.houseNo = houseNo;
    }

    public String getHouseBillNo() {
        return houseBillNo;
    }

    public void setHouseBillNo(String houseBillNo) {
        this.houseBillNo = houseBillNo;
    }

    public String getItemBillNo() {
        return itemBillNo;
    }

    public void setItemBillNo(String itemBillNo) {
        this.itemBillNo = itemBillNo;
    }

    public String getMeterTypeNo() {
        return meterTypeNo;
    }

    public void setMeterTypeNo(String meterTypeNo) {
        this.meterTypeNo = meterTypeNo;
    }

    public String getMeterClassifyNo() {
        return meterClassifyNo;
    }

    public void setMeterClassifyNo(String meterClassifyNo) {
        this.meterClassifyNo = meterClassifyNo;
    }

    public String getChargeName() {
        return chargeName;
    }

    public void setChargeName(String chargeName) {
        this.chargeName = chargeName;
    }


    public CommonEnum getChargeType() {
        return chargeType;
    }

    public void setChargeType(CommonEnum chargeType) {
        this.chargeType = chargeType;
    }

    public BigDecimal getBillAmount() {
        return billAmount;
    }

    public void setBillAmount(BigDecimal billAmount) {
        this.billAmount = billAmount;
    }

    public BigDecimal getPayableAmount() {
        return payableAmount;
    }

    public void setPayableAmount(BigDecimal payableAmount) {
        this.payableAmount = payableAmount;
    }

    public BigDecimal getPaymentAmount() {
        return paymentAmount;
    }

    public void setPaymentAmount(BigDecimal paymentAmount) {
        this.paymentAmount = paymentAmount;
    }

    public BigDecimal getNegotiateAmount() {
        return negotiateAmount;
    }

    public void setNegotiateAmount(BigDecimal negotiateAmount) {
        this.negotiateAmount = negotiateAmount;
    }

    public ChargeBillStatusEnum getBillStatus() {
        return billStatus;
    }

    public void setBillStatus(ChargeBillStatusEnum billStatus) {
        this.billStatus = billStatus;
    }

    public String getChargeDate() {
        return chargeDate;
    }

    public void setChargeDate(String chargeDate) {
        this.chargeDate = chargeDate;
    }

    public boolean isDeleted() {
        return deleted;
    }

    public void setDeleted(boolean deleted) {
        this.deleted = deleted;
    }

    public String getCreateName() {
        return createName;
    }

    public void setCreateName(String createName) {
        this.createName = createName;
    }

    public String getUpdateName() {
        return updateName;
    }

    public void setUpdateName(String updateName) {
        this.updateName = updateName;
    }

    public String getBillAddress() {
        return billAddress;
    }

    public void setBillAddress(String billAddress) {
        this.billAddress = billAddress;
    }

    public String getChargeHouseSetId() {
        return chargeHouseSetId;
    }

    public void setChargeHouseSetId(String chargeHouseSetId) {
        this.chargeHouseSetId = chargeHouseSetId;
    }

    public String getChargeTypeConfigId() {
        return chargeTypeConfigId;
    }

    public void setChargeTypeConfigId(String chargeTypeConfigId) {
        this.chargeTypeConfigId = chargeTypeConfigId;
    }

    public String getChargeProjectConfigJson() {
        return chargeProjectConfigJson;
    }

    public void setChargeProjectConfigJson(String chargeProjectConfigJson) {
        this.chargeProjectConfigJson = chargeProjectConfigJson;
    }

    public String getChargeLadderConfigJson() {
        return chargeLadderConfigJson;
    }

    public void setChargeLadderConfigJson(String chargeLadderConfigJson) {
        this.chargeLadderConfigJson = chargeLadderConfigJson;
    }
}
